#include <stdio.h>
#include "mysql-utils.h"

// 初始化并返回一个MYSQL指针
MYSQL* mysql_init_connection(const char *server, const char *user, 
                             const char *password, const char *database) {
    // 初始化一个MYSQL对象并获取一个指针
    MYSQL *conn = mysql_init(NULL);
    
    if (conn == NULL) { // 检查初始化是否成功
        fprintf(stderr, "mysql_init() failed:%s\n",mysql_error(conn));
        return NULL;
    }

    // 尝试连接到MySQL服务器
    if (mysql_real_connect(conn, server, user, password, database, 0, NULL, 0) == NULL) {
        fprintf(stderr, "mysql_real_connect faied:%s\n", mysql_error(conn));
        mysql_close(conn);
        return NULL;
    }
    
    return conn;
}

// 执行SQL语句
int execute_sql(MYSQL *conn, const char *sql) {
    if (mysql_query(conn, sql)) {
        fprintf(stderr, "Error making query: %s\n", mysql_error(conn));
        return -1;
    }
    return 0;
}

// 获取查询结果
MYSQL_RES* get_query_result(MYSQL *conn, const char *sql) {
    if (execute_sql(conn, sql) != 0)
        return NULL;

    MYSQL_RES *res = mysql_store_result(conn);// 获取查询结果
    if (res == NULL) {
        fprintf(stderr, "Retrieving result set failed: %s\n", mysql_error(conn));
        return NULL;
    }
    return res;
}

// 释放资源并关闭连接
void cleanup_and_close(MYSQL *conn, MYSQL_RES *res) {
    if (res != NULL)
        // 释放结果集占用的内存
        mysql_free_result(res);
    if (conn != NULL)
        // 关闭与MySQL数据库的连接
        mysql_close(conn);
}
